package com.xiumu.service.sys;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiumu.common.core.page.PageQuery;
import com.xiumu.pojo.sys.entity.HaloFile;
import com.xiumu.pojo.sys.query.HaloFileQuery;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 文件上传表 Service 接口
 *
 * @author XiuMu
 * @Date 2023-01-29 11:49:11
 */
public interface HaloFileService extends IService<HaloFile> {
    /**
     * 分页查询
     *
     * @param pageQuery 分页条件
     * @return
     */
    Page<HaloFile> listPage(PageQuery<HaloFileQuery, HaloFile> pageQuery);

    /**
     * 根据条件查询 file
     *
     * @param file 查询条件
     * @return
     */
    List<HaloFile> listByFileQuery(HaloFileQuery file);

    /**
     * 文件上传
     *
     * @param file 文件信息
     * @return
     */
    String uploadFile(MultipartFile file);

    /**
     * 根据文件的 key 逻辑删除, 不删除存储服务的源文件
     *
     * @param fileKey 文件的 key
     * @return
     */
    Boolean deleteByFileKey(String fileKey);

    /**
     * 彻底删除文件，包括存储服务的源文件
     *
     * @param id 主键ID
     */
    Boolean removeFileById(Long id);
}
